Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

退会したらGitHubアカウントとの連携のデータを空になるように修正 #7931

Open
wants to merge 8 commits into
base: main
Choose a base branch
from

Conversation

su-su-su-su
Copy link
Contributor

Issue

概要

変更確認方法

  1. chore/clear-github-data-on-account-deletion`をローカルに取り込む
  2. rails consoleでRailsコンソールを立ち上げる
  3. User.where(name: 'Kensyu Seiko').select(:name, :github_account, :github_id, :github_collaborator)でKensyu SeikoのGitHubアカウントとの連携のデータを確認
  4. foreman start -f Procfile.devでサーバーを立ち上げる
  5. Kensyu Seiko(github_accountがある為)でログイン
  6. 退会する
  7. 再度 User.where(name: 'Kensyu Seiko').select(:name, :github_account, :github_id, :github_collaborator)でKensyu SeikoのGitHubアカウントとの連携のデータが空になっていることを確認

Screenshot

変更前

708c4c91a4c34c5b15d86332b61827a1

変更後

8d3e5af9d76e6965ca1c25166207d945

@su-su-su-su su-su-su-su force-pushed the chore/clear-github-data-on-account-deletion branch from b123f0f to 66416fb Compare July 6, 2024 14:00
@su-su-su-su su-su-su-su self-assigned this Jul 6, 2024
@su-su-su-su
Copy link
Contributor Author

@motohiro-mm

お疲れ様です。
可能でしたらお手隙の際に、こちらのPRのレビューをお願いできますでしょうか?
ご都合が合わない場合はおっしゃってください🙇‍♀️
どうぞよろしくお願いいたします!

@motohiro-mm
Copy link
Contributor

@su-su-su-su

承知いたしました!
1週間以内にレビューさせていただきます。
よろしくお願いいたします!

Copy link
Contributor

@motohiro-mm motohiro-mm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su

確認させていただきました!遅くなりました🙏
問題なく再現できました!
気になったところをコメントさせていただきましたので、ご確認ください!

@@ -823,6 +823,14 @@ def scheduled_retire_at
hibernated_at + User::HIBERNATION_LIMIT if hibernated_at?
end

def clear_github_data
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

今回こちらのメソッドをモデルに追加しているので、このメソッド自体のテストは必要かと思ったのですがいかがでしょうか?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@motohiro-mm すみません、ちょっと質問の意図が理解できてないかもです。

基本的にはモデルにメソッドを追加した場合、モデルのテスト(ユニットテスト)の追加は必要になります。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata

私が最初にレビューさせていただいたときには、モデルのテストが追加されていなかったため、このようにコメントさせていただきました。
その後、test/models/user_test.rb:740test 'clear_github_data should clear GitHub related fields'が追加されています。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@motohiro-mm なるほどです〜

visit_with_auth new_retirement_path, 'kimura'
find('label', text: 'とても良い').click
click_on '退会する'
page.driver.browser.switch_to.alert.accept
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このコードはSeleniumがドライバーの時に使えるようです。
https://www.selenium.dev/ja/documentation/webdriver/interactions/alerts/
現状ドライバーはSeleniumなので問題ないのですが、今後ドライバーを変更するとこのコードは動かなくなります。

Capybaraのpage.accept_confirmを使えばドライバーを変更しても同じ動作ができるようになるので、そちらの書き方のほうが望ましいのかなと思いました!

私が参考にしたリンクを一応貼っておきます↓
https://trends.codecamp.jp/blogs/media/difference-word6
https://qiita.com/at-946/items/403d85d45cb02615c323
https://bootcamp.fjord.jp/reports/98175#comment_170875

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらもありがとうございます!
参考リンク、日報もとても勉強になりました!
ドライバーを変更するとコードが動かなくなることが把握できていなかったです。

page.accept_confirm '本当によろしいですか?' do
  click_on '退会する'
end

に変更しました!

@su-su-su-su
Copy link
Contributor Author

@motohiro-mm

レビューありがとうございました。
ご指摘頂いた箇所を修正いたしましたので、お手隙の際に再度ご確認をお願いいたします🙏

Copy link
Contributor

@motohiro-mm motohiro-mm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su

確認させていただきました!
問題なさそうなので、私からはapproveさせていただきます!

勉強になりました!✏️
ありがとうございました🙏

@su-su-su-su
Copy link
Contributor Author

@motohiro-mm

ご確認ありがとうございました!
こちらこそ勉強になりました🙏

@su-su-su-su
Copy link
Contributor Author

@komagata
approveいただきましたのでレビューをお願いできますでしょうか 。
よろしくお願いいたします。

@@ -823,6 +823,14 @@ def scheduled_retire_at
hibernated_at + User::HIBERNATION_LIMIT if hibernated_at?
end

def clear_github_data
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@motohiro-mm なるほどです〜

@@ -736,4 +736,18 @@ class UserTest < ActiveSupport::TestCase
test '.users_job returns all users when invalid job is passed' do
assert_equal User.all, User.users_job('destroy_all')
end

test 'clear_github_data should clear GitHub related fields' do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
test 'clear_github_data should clear GitHub related fields' do
test '#clear_github_data' do

モデルのテストで、代表的なテストだけだったら他と一緒でこういう名前でいいかもです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご指摘ありがとうございます。

test '#clear_github_data' do

と修正いたしました。

@su-su-su-su
Copy link
Contributor Author

@komagata
テストのメソッド名を修正しました。
再度ご確認をお願いいたします。

Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su conflictの修正をお願いします〜

@su-su-su-su
Copy link
Contributor Author

@komagata
ご確認、コメントありがとうございます。
修正いたしましたので再度ご確認いただけますでしょうか。
よろしくお願いいたします。

notify_to_mentors(user)
logout
redirect_to retirement_url
begin
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらのファイルの今回と関係ない部分が変更されているようです。
こちらはどういった意図でしょうか。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata

お疲れ様です。
当初今回のイシューの処理をcreateメソッドに追加したのですが20行を超えた為、Metrics/MethodLengthというエラーがでてしまいました。
その為今回の変更と関係のないコードを分割したという経緯です。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su

なるほどです。
ControllerがFatになっているのでしたら、モデルクラスに切り出すのが良さそうです。
こんな感じがいいかもです。

class UserRetirement
  def initialize(user)
    @user = user
  end

  def execute
    # ...
  end
end

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

アドバイスありがとうございます。
現在UserRetirementクラスにclear_github_data処理だけを切り出したのですが、このクラス名から考えると、退会に関する他の処理(サブスクリプションの解約、通知の送信など)もこのクラスにまとめるべきでしょうか?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su はい。UserRetirementに相応しい処理は全てそちらに書くべきです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata

回答ありがとうございました。UserRetirementに退会に関する処理を追加しました。
ご確認よろしくお願い致します。

@su-su-su-su su-su-su-su force-pushed the chore/clear-github-data-on-account-deletion branch from eb2db3f to 61d4b4e Compare September 13, 2024 14:37
@komagata
Copy link
Member

komagata commented Oct 1, 2024

@su-su-su-su conflictの修正をお願いします〜

@su-su-su-su su-su-su-su force-pushed the chore/clear-github-data-on-account-deletion branch from f8c510e to b4c9d98 Compare October 3, 2024 02:59
@su-su-su-su
Copy link
Contributor Author

@komagata
修正いたしました。お手隙の際に再度ご確認をお願いいたします。

@@ -0,0 +1,44 @@
# frozen_string_literal: true

class UserRetirement
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

こちらのテストが必要かと思います〜。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata
ご指摘ありがとうございます。
UserRetirement のテストを作成しているのですが、どこまでテストをカバーすべきか確認したく、ご相談させてください。
clear_github_dataメソッドのテストについては以前test/models/user_test.rbに作成しました。

退会時の通知に関してはtest/deliveries/activity_delivery_test.rbファイル内に以下のようなテストが既に存在しています。

  test '.notify(:retired)' do
    params = {
      sender: users(:yameo),
      receiver: users(:mentormentaro)
    }

    assert_difference -> { AbstractNotifier::Testing::Driver.deliveries.count }, 1 do
      ActivityDelivery.notify!(:retired, **params)
    end

    assert_difference -> { AbstractNotifier::Testing::Driver.enqueued_deliveries.count }, 1 do
      ActivityDelivery.notify(:retired, **params)
    end

    assert_difference -> { AbstractNotifier::Testing::Driver.deliveries.count }, 1 do
      ActivityDelivery.with(**params).notify!(:retired)
    end

    assert_difference -> { AbstractNotifier::Testing::Driver.enqueued_deliveries.count }, 1 do
      ActivityDelivery.with(**params).notify(:retired)
    end
  end

このように既存のテストがある場合でも、追加でテストを作成する必要があるかどうか、ご意見をいただけますでしょうか?
お手数をおかけしますが、アドバイスいただけますと幸いです。
よろしくお願いいたします。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su まず、 @su-su-su-su さんはどうするべきだと考えますか??

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata
コメントありがとうございます。
改めて考えてみるとclear_github_dataメソッドなど個々のメソッドに対するテストは既に存在しますが、executeメソッドがこれらのメソッドを正しく呼び出しているかを確認するテストが不足していると気付きました。
そのため、executeメソッドが退会処理を正しく実行しているかを検証するテストを追加したいと思います。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@su-su-su-su 確かにですね。
本来systemテストでカバーしていればモデルのテストでは不要かもですが、ここはかなり重要で心配な処理なので、おっしゃる通りに退会処理が正しくできているかのテストを書いていただければありがたいです。

Copy link
Contributor Author

@su-su-su-su su-su-su-su Nov 17, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@komagata
executeメソッドが他のメソッドを呼び出しているかを確認するテストを追加いたしました。
再度ご確認よろしくお願いいたします。

@su-su-su-su su-su-su-su force-pushed the chore/clear-github-data-on-account-deletion branch from b4c9d98 to 7a51f8b Compare November 14, 2024 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants